Engine principal de processamento de Big Data. Funciona como hadoop
O Spark não possui um sistema de armazenamento como o Hadoop MapReduce. Logo, podemos usar o Hadoop HDFS junto com o Spark
Benefícios: Fácil de usar, Veloz,Engine de uso geral para várias atividades
Apache Spark é uma plataforma de computação em cluster(conjunto de computadores), criado
para ser veloz e de uso geral, sendo ideal para processamenteo iterativo e processamento de streaming de dados(fluxo contínuo de dados)
Spark realizar computação em memória(o q ajuda a explicar sua velocidade), mas tb é eficiente quando executa aplicações em disco.
Pq aprender: cada vez mais utlizaddo por empresas interessadas em analisar dados em tempo real; tecnologia bastante utilizada; suporte cada vez maior; crescente demanda por profissionais que saibam processar dados em tempo real
Utilizações: detecção de fraudes em tempo real; detecçaõ de invasão de redes; campanhas de marketing e propagandas em tempo real; análise de sentimento em redes sociais; pode ser usado como ferramente ETL
Suporte 4 linguagens: R, Java , Scala e Python. Pyhton é a ferramenta ideal para trabalhar com Spark
Streming de dados: são dados gerados continuamente por milhares de fontes de dados, que geralmente enviam os registros de dados simultaneamente, em tamanhos pequenos(na ordem de kilobytes). Os dados em streaming devem ser processados de maneira sequencial e incremental por registro e usados para uma ampla variedade de análises de dados, como agregações, correlações filtragem e amostragem.
O Apache Spark foi a primeira plataforma de Big Data a integrar processamento de dados em batch, streaming e computação distribuída em um único framework.
Spark é excelente para trabalhos iterativos(Machine Learnig)
Shell para exploração ad-hoc(abre um terminal, digita comando e acessa os dados quase em tempo real)
Regra de Ouro: conjunto de dados < 1 TB: Melhor usar Spark; cc : Hadoop/Spark
Quando usar o Spark? :
Integração de dados(buscar dados de um banco relacional e levar p o hadoop) e ETL
Análises Interativas: Abrir um terminal no Spark e executar uma query direto nos dados.
Computação em Batch de alta Performance: coleta os dados, armazena e preocessa mais tarde
Análises Avançadas de Machine Learning
Processamento de Dados em Tempo Real
Características do Spark: Realizaa operações de MapReduce; Pode utilizar o HDFS; Permite construir um workflow de Analytics; Utiliza a memória do computador de forma diferente e eficiente; Veloz, flexível e gratuito
Apache Spark SQL
Spark Session: conector para acessa o API spark-sql.
SQL Context:Encapsula todas a funcionalidades relacionadas ao Apache Spark; é possível criar um SQL-context a partir do Spark-context;
Spark-Context: é para entrar no contexto de cluster e executar a aplicação
SQL-context: Necessária a criação para acessar o API Spark-sql
Exemplo de string de conexão: jdbc:mysql://localhost:3306/test
Tabelas Temporáriais: Estruturas simples, mas poderosas. Uma query aplicada em tabela temporária retorna outro dataframe.O uso de Tabelas Temporárias se dá quando queremos utilizar SQL no padrão ANSI. Se não for possível, podemos usar SQL no padrão do SPARK, que tem sintaxe diferente. O uso de TT tem a limitação da memória, pois os dados são carregados na memória.
Passo-a-Passo
Preparando o Ambiente Python e Spark
Endereço oficial Python: www.python.org
Anaconda traz o interpretador padrão python + vários pacotes. Endereço: anaconda.org
O endereço: spark.apach.org encontra-se o Spark . Na opção 2 deixar marcado "Pre-built for Apach Hadoop 2.7 and later"
O Spark foi desenvolvido na linguagem Scala. Essa linguagem requer uma JVM(Java Virtual Machine). Econtra-se no endereço:(a versão utilizada foi a kit 11.0.3) https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Uma vez iniciado o PySpark, é criado um Spark Context, que nos permite criar RDD's e Dataframes e realizar transformações e ações.
Cada operação Spark gera um job que então é executado ou agendado para ser executado ao longo do cluster de computadores ou localmente em nossa máquina.
RDD: estrutura de dados do Spark
Site Oficial da Linguagem Python
https://www.python.org/
Python Brasil
http://wiki.python.org.br/
Python Package Index
https://pypi.python.org/pypi
Documentação Anaconda
https://docs.continuum.io/
Beaker Notebookhttp://beakernotebook.com/
PyScience Brasil
http://pyscience-brasil.wikidot.com/
Anaconda Download
https://repo.continuum.io/archive/
Spark Download
http://spark.apache.org/downloads.html
Apache Spark
http://spark.apache.org/Winutils
https://github.com/steveloughran/winutils
Java JDK
https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Spark Archive
https://archive.apache.org/dist/spark/
Instalando o Java. Dicas: 1) O diretório não deve ter espaço no nome. 2)Criar uma pasta exclusiva em C:\ para o Java
O Apache Spark não tem um instalador. Simplesmente descompacta o arquivo e configura-se as variáveis de ambiente. Descompactar duas vezes. O primeiro arquivo é com extensão tgz(é arquivo compactado). A extensão .tar é o arquivo comprimido. Mover o arquivo descompactado para a raiz C: para facilitar a configuração das variáveis de ambiente.
Configuração das Variáveis de ambiente: Variáveis de ambiente indica para o sistema operacional onde se encontra os programas de interesse.
O Spark não foi feito para Windows, por isso esses passos.
1) Abrir o painel das variáveis de ambiente
2)No campo de variáveis de sistema, criar nova variável de ambiente
# JDK # Inserir as variáveis JAVA_HOME e PATH : JAVA_HOME = C:\Java\jdk-11.0.3
PATH = C:\Java\jdk-11.0.3\bin (tem q mover o JAVA para cima!!)
Ajustando a versão do Java JDK
1) o JVM do java permite que o java seja uma linguagem de programação multiplataforma.
2) A instalação do java-jdk é necessária porque o Spark foi desenvolvido em linguagem Scala, a qual utiliza o JVM para sua execução.
3) A instalação da JVM se dá com a instalação do JAVA-JDK
4) Até 07/2019 era o Java 11 que é usada, devido a sua compatibilidade com o Spark.
5) Há um bug no uso do Spark SQL com o Java 11. Com isso, é necessário usar o Java JDK 1.8 . CONFIGURAÇÃO necessária.
6) Basta alterar a variável de ambiente.
7) Verificar no futuro próximo se a próxima versão do Spark traga suporte para o Java 11.
Numpy: biblioteca matemática para linguagem Python
O uso do Numpy agiliza o processamento dos dados relativamente a outros métodos disponíveis em Python
Python: linguagem completa. Eficiente na etapa de pré-processamento(aquele que é realizado antes da criação dos modelos preditivos). Outra vantagem, é que todo o processo do início ao fim pode ser realizado em Python (desde a concepção do problema até a publicação de uma aplicação analítica construída, por exe, para o ambiente web ). Essa situação fica limitada no R.
Em PythonTUDO é objeto. Os objetos tem características e podem executar ações.A característica pode ser resgatada via atributo. Já para aplicar uma ação, uso um método. Os métodos são chamados com o uso de parênteses ().
PyData Stack: Conjunto de pacotes Python específicos para ciência de dados. Numpy é a base para a maioria dos pacotes.
NumPy: oferece a base para a manipulação de estruturas de dados. Usado conjuntamente com outros pacotes. O objetivo principal é ser usado como conteiner para os dados para serem usados/manipulados no processo de análise. Os arrays do Numpy são muito eficientes!!
Pandas I: Pacote de análise de dados de alta performance. Amplamente adotada para manipulação de dados. No processo de análise frequentemente necessita-se de dataframes. Isso é obtido via Pandas, fornecendo possibilidades de fatiar, manipular os dados muito facilmente.
Uma plataforma de manipulaçaõ de dadospode ser obtida com a união das bibliotecas Numpy e Pandas
Pandas: Excel para programação. Muitas funções do excel podem ser realizadas com essa biblioteca
Pandas: Permite trabalhar com séries temporais e dataframes contendo qualquer tipo de dado, executando inúmeras operações com esses dados
Posso usar o Pandas para transformar um conjunto de dados no formato JSON para um dataframe. Com isso, consegue-se manipular os dados facilmente.
Os objetos criados com Numpy e Pandas são semelhantes. A diferença é que usa-se o Numpy para computação numérica(só se tem valores numéricos no conjunto de dados), enquanto o Pandas é usado de forma mais ampla, quando tenho um conjunto de dados muito diversificado(strings, valores NA,...)
Para instalar um pacote Python diretamente do Jupyter Notebook, usar a exclamação antes do comando pip. Exemplo: !pip install xarray
Pivotear um conjunto de dados é modificá-lo em diferentes perspectivas!
DICA:Ao manipular dados em Python, consultar a página https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
DICA:Procurar entender o OBJETO que se está trabalhando em Python. Disso, verfica-se na documentação os atributos e métodos que são de interesse ao manipular os dados.
# Se precisar instalar uma versão específica o pandas, use:
# !pip uninstall pandas
# !pip install pandas == 0.23.4
O Apache Hadoopé um framework para armazenamento e processamento de grandes quantidades de dados distribuidos em um cluster de computadores.
O Apache Hadoopé um framework de código aberto, criado em linguagem Java, utilizado para armazenamento e processamento de grandes quantidades de dados distribuidos em um cluster de computadores. Os elementos chaves são: Modelo de programação MapReduce e o sistema de arquivos HDFS
HDFS:sistema de arquivos criado para armazenamento de Big Data de forma distribuida em um cluster de computadores. Um sistema de arquivos possui um conjunto de funcionalidades, tais como armazenamento, organização.Um sistema de arquivos nada mais é do que um conjunto de estruturas lógicas e de rotinas que permitem ao sistema operacional controla o acesso ao HD.
Hadoop: não é um banco de dados. Hadoop é um framework composto de uma camada de sistema de arquivos distribuído(HDFS) e uma camada de programação em paralelo(MapReduce) além do gerenciador de recursos(Yarm). Tanto o Hadoop quanto um banco de dados relacionais sirvam para armazenar dados, eles o fazem de maneira distinta, com propósitos diferentes. Para dados estruturados ou não estruturados, usamos o Apache Hadoop.
Banco de dados relacionais(RDBMS): é uma aplicação que permite armazenar e obter de volta os dados com a máxima eficiência possível. O que o torna relacional é a maneira como os dados são armazenados e organizados no banco de dados. Em um banco de dados relacional todos os dados são guardados em tabelas(conjunto de linhas e colunas). São os relacionamentos entre as tabelas que as tornam relacionais.
SGBD: Sistema gerenciador de banco de dados. É um software que controla um ou mais bancos de dados. eX: Oracle
Banco de dados relacionais: são indicados para aplicações que lidam com uma grande quantidade de consultas complexas, análide de dados de rotina
Razões para usar Hadoop
Open Source
Hadoop ofecece o framework mais completo para armazenamento e processamento de Big Data
A líder mundial em banco de dados relacionais, a Oracle, oferece soluções de Big Data Analytics com Hadoop.
Microsoft oferece soluções corporativas em nuvem, com Hadoop
Um cientista de dados deve conhecer bem o paradigma de processamento MapReduce.
Instalando o Ecossistema Hadoop
Softwares: Virtual Box( www.virtualbox.org)
Sistema Operacional: Linux( www.redhat.org) . Usou-se o CentOs(cópia gratuita do redhat). Escolher o DVD ISO
Este TP consiste na implementação (em linguagem R) e execução de métodos de geração de variáveis aleatórias, utilizando o método congruencial, método Monte Carlo e o método Polar
O presente trabalho consiste em implementar em linguagem R três métodos de ordenação, a saber: Seleção, Inserção e QuickSort. Além disso, os métodos devem ser comparados em temos de tempo de execução,
número de comparações e de movimentações.
Objetivo: criar no R página HTML interativa com dropdown possibilitando seleção de todo o conjunto de serviços/países/estados .Estudar a viabilidade disso